const path = require('path')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const HtmlWebapckPlugin = require('html-webpack-plugin')
module.exports = {
  entry: './src/main.js',
  output: {
    path: path.join(__dirname, 'dist'), // 这个是总的输出目录，不管什么资源都输出在这里面
    filename: 'static/js/main.js', // 这里是入口文件的输出
    clean: true // 自动将上次打包的目录清空
  },
  module: {
    rules: [
      {
        test: /\.css$/, // 表示处理满足该正则条件的文件
        // loader: 'xx' loader还可以这样写，但是只能应用一个loader
        use: ['style-loader', 'css-loader'] // 应用的loader，执行顺序从右到左，并且当前的输出是后一个的输入
      },
      {
        test: /\.less$/,
        use: ['style-loader', 'css-loader', 'less-loader']
      }, 
      { // webpack5内置了file-laoder和url-loader，想要打包成base64如何实现？
        
        test: /\.(png|jpe?g|gif|svg)/,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            maxSize: 200 * 1024 // 小于200KB的转为base64
          }
        },
        generator: {
          // 修改输出路径，如果hash只要前8位，那么用下面的形式，query就是查询参数。url的查询参数?variable=xxx这种形式
          filename: 'static/images/[hash:8][ext][query]'
        }
      }
    ]
  },
  plugins: [
    // new CleanWebpackPlugin()
    new HtmlWebapckPlugin({
      template: path.resolve(__dirname, 'public/index.html')
    })
  ],
  devServer: {
    host: "localhost", // 启动服务器域名
    port: '3000', // 启动服务器端口号
    open: true, // 是否自动打开浏览器
  },
  // 模式
  mode: 'development'
}